
package edu.uoc.tds.pec4.model;
import java.io.Serializable;
import java.util.Date;
import java.util.ArrayList;
/**
 * Tecnicas de Desarrollo de Software - (UOC)
 * Clase para representar cualquier evento en el sistema, de forma abstracta
 * @author Grupo Magicsoftware - Yolanda Jiménez Anaya
 * @version 1.0
 */


public class SS2_Evento implements Serializable{
    private static final long serialVersionUID = 1L;
    private int cod_evento;
    private int cod_centrodocente;
    private String nombre;
    private String descripcion;
    private Date fecha_alta;
    private Date fecha_celebracion;
    private String activo;
    private Date fecha_actividad;
    private String motivo_estado;
    private int cod_tipoevento;
    private int capacidad;
    private Date fechainicioinscripcion;
    private Date fechafininscripcion;
    private String duracion;
    private int precio;
    private int plazas;
    private int umbral;
    private int creditos;
    //Listas pertenecientes al evento
    private ArrayList<SS2_Evento> eventosPrereq;
    //Asistentes inscritos al evento. En su creación la lista estará vacía.
    private ArrayList<SS1_Usuario> asistentes;
    private Boolean checkin=false;
    /*Constructor vacío*/
    public SS2_Evento()
    {
    }


    public SS2_Evento( 
     int cod_centrodocente,
     String nombre,
     String descripcion,
     Date fecha_alta,
     Date fecha_celebracion,
     String activo,
     Date fecha_actividad,
     String motivo_estado,
     int cod_tipoevento,
     int capacidad,
     Date fechainicioinscripcion,
     Date fechafininscripcion,
     String duracion,
     int precio,
     int plazas,
     int umbral,
     int creditos){
        //this.cod_evento = cod_evento;
          this.cod_centrodocente =cod_centrodocente;
          this.nombre = nombre;
          this.descripcion = descripcion;
          this.fecha_alta = fecha_alta;
          this.fecha_celebracion = fecha_celebracion;
          this.activo = activo;
          this.fecha_actividad = fecha_actividad;
          this.motivo_estado  = motivo_estado;
          this.cod_tipoevento = cod_tipoevento;
          this.capacidad = capacidad;
          this.fechainicioinscripcion =fechainicioinscripcion;
          this.fechafininscripcion= fechafininscripcion;
          this.duracion = duracion;
          this.precio = precio;
          this.plazas = plazas;
          this.umbral = umbral;
          this.creditos = creditos;
    }

    /**
     * Crea un nuevo evento que contiene datos *****
     *
     * @param idEvento          Identificador del evento
     * @param universidad       Universidad del evento
     * @param centro            Centro del evento
     * @param descripcion       Descripción del evento
     * @param fechaCelebracion  Fecha de Celebración
     * @param tipoEvento        Tipo del evento
     * @param eventosPrereq     Eventos que se han debido realizar antes
     * @param capacidad         Capacidad de asistentes
     * @param fechaInicioInscripcion Fecha Inicio inscripción
     * @param fechaFinIncripcion     Fecha Fin de inscripción
     * @param duracion          Duración del evento
     * @param precio            Precio del evento
     */

    /*public SS2_Evento(int idEvento, SS1_Universidad universidad,
                      SS1_CentroDocente centro,String descripcion,
                      Date fechaCelebracion, SS1_TipoEvento tipoEvento ,
                      ArrayList<SS2_Evento> eventosPrereq, int capacidad,
                      Date fechaInicioInscripcion, Date fechaFinIncripcion,
                      int duracion, int precio){


        this.idEvento = idEvento;
        this.universidad = universidad;
        this.centro = centro;
        this.descripcion = descripcion;
        this.fechaCelebracion = fechaCelebracion;
        this.tipoEvento = tipoEvento;
        this.eventosPrereq = eventosPrereq;
        this.capacidad = capacidad;
        this.fechaInicioInscripcion = fechaInicioInscripcion;
        this.fechaFinIncripcion = fechaFinIncripcion;
        this.duracion = duracion;
        this.precio = precio;
    }*/

    /**
     * Crea un nuevo evento que contiene datos de la BD*****
     *
     * @param idEvento      Identificador del evento
     * @param idCentro      Identificador del centro
     * @param nombre        Nombre del evento
     * @param descripcion   Descripción del evento
     * @param fechaCelebracion  Fecha de Celebración
     * @param fechaAlta     Fecha de Alta
     * @param estado        Estado del evento
     * @param fechaEstado   Fecha del estado
     * @param motivoEstado  Motivo Estado
     * @param idtipoEvento  Identificación tipo evento
     * @param plazas        Plazas disponibles
     * @param umbral        Unbral de inscripciones
     * @param fechaInicioInscripcion  Fecha inicio de inscripción
     * @param fechaFinIncripcion      Fecha fin de inscripción
     * @param duracion      Duración del evento
     * @param creditos      Creditos del evento
     * @param precio        Precio del evento
     */
    /*public SS2_Evento( int idEvento,int idCentro, String nombre,
                     String descripcion,Date fechaCelebracion,
                     Date fechaAlta, int estado, Date fechaEstado,
                     String motivoEstado, int idtipoEvento,
                     int plazas, int umbral, Date fechaInicioInscripcion,
                     Date fechaFinIncripcion,int duracion,
                     int creditos,int precio ){


             this.idEvento = idEvento;
             this.idCentro = idCentro;
             this.nombre = nombre;
             this.descripcion = descripcion;
             this.fechaCelebracion = fechaCelebracion;
             this.fechaAlta = fechaAlta;
             this.estado = estado;
             this.fechaEstado = fechaEstado;
             this.motivoEstado = motivoEstado;
             this.idtipoEvento = idtipoEvento;
             this.plazas = plazas;
             this.umbral = umbral;
             this.fechaInicioInscripcion = fechaInicioInscripcion;
             this.fechaFinIncripcion = fechaFinIncripcion;
             this.duracion = duracion;
             this.creditos = creditos;
             this.precio = precio;
    }

    public SS2_Evento(int idEvento, String descripcion) {
         this.idEvento = idEvento;
         this.descripcion = descripcion;
    }*/

    /*Identificador del evento*/
    public int getidEvento() {
        return cod_evento;
    }

    public void setidEvento(int cod_evento) {
        this.cod_evento = cod_evento;
    }

     /*Identificador del evento*/
    public int getCodCentro() {
        return cod_centrodocente;
    }

    public void setCodCentro(int cod_centrodocente) {
        this.cod_centrodocente = cod_centrodocente;
    }

    /*Universidad*/
    /* public SS1_Universidad getuniversidad() {
        return universidad;
    }

    public void setuniversidad(SS1_Universidad universidad) {
        this.universidad = universidad;
    }*/

    /*Centro*/
    /* public SS1_CentroDocente getcentro() {
        return centro;
    }

    public void setcentro(SS1_CentroDocente centro) {
        this.centro = centro;
    }*/

    /*Descripción*/
    public String getdescripcion() {
        return descripcion;
    }

    public void setdescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /*Nombre*/
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

   /*Fecha de Alta*/
    public Date getfechaAlta() {
        return fecha_alta;
    }

    public void setfechaAlta(Date fecha_alta) {
        this.fecha_alta = fecha_alta;
    }

    /*Fecha de Celebración*/
    public Date getfechaCelebracion() {
        return fecha_celebracion;
    }

    public void setfechaCelebracion(Date fecha_celebracion) {
        this.fecha_celebracion = fecha_celebracion;
    }

    /*Activo*/
    public String getActivo() {
        return activo;
    }

    public void setActivo(String activo) {
        this.activo = activo;
    }


    /*Fecha Actividad*/
     public Date getfechaActividad() {
        return fecha_actividad;
    }
    public void setfechaActividad(Date fecha_actividad) {
        this.fecha_actividad = fecha_actividad;
    }

    /*Motivo Estado*/
    public String getMotivoEstado() {
        return motivo_estado;
    }

    public void setMotivoEstado(String motivo_estado) {
        this.motivo_estado = motivo_estado;
    }

    /*Tipo Evento*/
    public int gettipoEvento() {
        return cod_tipoevento;
    }

    public void settipoEvento(int cod_tipoevento) {
        this.cod_tipoevento = cod_tipoevento;
    }
    
    /*Capacidad*/
    public int getcapacidad() {
        return capacidad;
    }
    public void setcapacidad(int capacidad) {
        this.capacidad = capacidad;
    }

    /*Fecha Inicio Inscripcion*/
    public Date getfechaInicioInscripcion() {
        return fechainicioinscripcion;
    }
    public void setfechaInicioInscripcion(Date fechainicioinscripcion) {
        this.fechainicioinscripcion = fechainicioinscripcion;
    }

    /*Fecha Fin Incripcion;*/
     public Date getfechaFinIncripcion() {
        return fechafininscripcion;
    }
    public void setfechaFinIncripcion(Date fechafininscripcion) {
        this.fechafininscripcion = fechafininscripcion;
    }

    /*Duración*/
    public String getduracion() {
        return duracion;
    }
    public void setduracion(String duracion) {
        this.duracion = duracion;
    }

    /*Precio*/
    public int getprecio() {
        return precio;
    }
    public void setprecio(int precio) {
        this.precio = precio;
    }
    
    /*Plazas*/
    public int getPlazas() {
        return plazas;
    }

    public void setPlazas(int plazas) {
        this.plazas = plazas;
    }

    /*Umbral*/
    public int getUmbral() {
        return umbral;
    }

    public void setUmbral(int umbral) {
        this.umbral = umbral;
    }
    
    /*Creditos*/
    public int getCreditos() {
        return creditos;
    }

    public void setCreditos(int creditos) {
        this.creditos = creditos;
    }
    /*Asistentes a un evento*/
    public ArrayList<SS1_Usuario> getasistentes() {
        return asistentes;
    }

    public void setasistentes(ArrayList<SS1_Usuario> asistentes) {
        this.asistentes = asistentes;
    }


/*Eventos que son prerequisitos para poder inscribirse al evento*/
    public ArrayList<SS2_Evento> geteventosPrereq() {
        return eventosPrereq;
    }

    public void setRoles(ArrayList<SS2_Evento> eventosPrereq) {
        this.eventosPrereq = eventosPrereq;
    }

    @Override
    public String toString(){
        return nombre;
    }

    public Boolean getCheckin() {
        return checkin;
    }

    public void setCheckin(Boolean checkin) {
        this.checkin = checkin;
    }
}
